Webサイトやスマホアプリ上のユーザー行動データを収集・分析できる「Snowplow」を使ってみた
大阪オフィスの玉井です。
今回は、行動データプラットフォームのSnowplowを触ってみました。
Snowplowとは
ざっくりいうと、Webサイトやスマホアプリ上のユーザーの行動をトラッキングして、DWH等のサービスに格納できるサービスです。
(おそらく)SaaSとして提供されています。が、実はオープンソース版もあるため、こちらを自分でデプロイ〜運用する分には、無料で利用することが可能です。
ちなみに、2022年6月にシリーズBを達成しているので、なかなか勢いのあるサービスだと思われます。
やってみた
やってみた内容の概要
今回はとりあえず超基本的な部分だけ(トラッキングの設定→トラッキングしたデータをテキトーに照会)やってみます。
環境とか
Snowplowにはいくつかの種別がありますが、お試し向けの「Try Snowplow」を使います。色々制限がついてるSaaS版といった感じで、すぐにトライアルすることができます。期間は2週間です。
ちなみに、Snowplowの仕込み先として、Zendeskのサンドボックス環境のヘルプセンターを使用します。
サインアップしてログイン
SnowplowのHPからサインアップして、SnowplowのGUIにログインします。
SnowplowのコードをWebサイト側に仕込む
Snowplowに限らず、こういうトラッキング・Web計測系のサービスは、データを拾うために、Web側に何らかを仕込む必要があります。
ログインした画面に、これ見よがしに「Start tracking events」という見出しがあるので、そこを見ると、埋め込み先に合わせたトラッキングコードが簡単に確認できます。今回はスマホアプリではなく、Webサイトなので、Javascriptを選択します。
すると、「このコードをコピッて埋め込んどいて」って感じで、スニペットが表示されるので、これをそのままコピーして使用します。
今回はGoogleタグマネージャーを使います。普通にタグを新規作成して「カスタムHTML」で、上記のコードをそのまんま貼り付けるだけでいけます。
タグの公開まで一通り設定を終えて、問題がなければ、Snowplow側でステータスがOKになっています。
問題なく埋め込めているので、ここらへんで、データを発生させるため、Webサイトを適度にテストブラウジングしておきます。
トラッキング・収集したデータをSQLで参照する
お試し向けの「Try Snowplow」では、トラッキングしたデータは(Snowplow側がホストしている)Postgresに格納されます。そのPostgresへの接続情報も、トップページから簡単に確認できます。
ちなみに、Credentialsは、セキュリティの都合上、一度しか確認できないため、注意しましょう。
接続確認
一旦、コマンドで接続だけ簡易的に確認します。
> psql -h xxxxxxxxxxxxxxxxxxxx.try-snowplow.com -U xxxxxxxx -d snowplow Password for user xxxxxxxxxx: psql (14.5, server 13.8 (Debian 13.8-1.pgdg110+1)) SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off) Type "help" for help. snowplow=>
特に問題なく接続できました。
スキーマ等の確認
もう少し全体像を把握したいので、SQLクライアントで接続してみます。
スキーマはこんな感じです。簡単に説明すると、atomic
がローデータ、bad_rows
が正しく拾えなかったデータ、derived
がサマリー等のモデル(ユーザーが作る)になります。
試しに、atomic.events
テーブルを見てみます。その名の通り、発生したイベントがデータとして格納されています。
サマリーテーブルの作成
テーブルをそのまま眺めても、ピンとこないため、わかりやすいサマリーテーブルを作ります。といっても、Snowplow側が公式でレシピを用意してくれているため、それをコピって実行するだけです。
SQLクライアントで実行した結果です。
そのサイトに来たユーザー数や、最後にイベントが発生した日時がわかるようになっていますね。
検討事項など
Google Analyticsとの違い
チュートリアルの内容はかなり簡易的なものなので、これだけ見ると、GAと同じように感じました(実際、比較記事もあったりする)。
しかし、今回少し触っただけの私でも、Snowplowには少なくとも下記の特徴があると思いました。
- トラッキング対象や仕込み方が豊富
- Webサイトだけでなく、スマホアプリも対象
- フロントだけでなく、サーバーサイド側で仕込むことも可能
- Webhookを用いて特定のSaaSのデータも取り込める
- Sendgridなど
- 何ならGoogle Analyticsもある(!)
- データの格納先が選べる(後述)
データの格納先に各種DWH(+アルファ)がある
Snowplowの大きな特徴の1つだと思うのですが、トラッキングしたデータの格納先を色々選ぶことができます。
個人的に3大DWH(Redshift、Snowflake、BigQuery)があるのが大きいと思っています。ある程度データ分析基盤ができている組織の場合、ほとんどがこれらのDWHにデータを集約しているはずですので、そこにSnowplowでのトラッキングデータも加わると、既存のBIツールですぐに分析を始めることができますし、別データを用いた横断的なデータ分析のレベルも向上すると思います。
また、DWHに格納されたSnowplowデータ向けに、すでにdbt Packageが存在します。
高度な活用(分析)
公式のSQLレシピを見ていると、ECサイト向けだったり、特定のユーザーに絞った分析ができるみたいなのですが、今回の仕込み方だけでは現れないテーブルが使われていました。おそらく、もう少し高度な埋め込み方法があるようなので、どうにしかして試せないか検討中です。
おわりに
DWHへの連携を試したいのですが、Try Snowplowでは使えない(プランのアップグレードが必要)ので、どうしようか悩んでいます…。